
using Microsoft.AspNetCore.Mvc;
using StoreApp.Domain;
using StoreApp.Dto;
using StoreApp.Repository;

namespace StoreApp.Controllers;

[ApiController]
[Route("api/[controller]")]
public class StoreController : ControllerBase
{
    private readonly IRepository<Store> _storeRep;
    public StoreController(IRepository<Store> storeRep)
    {
        _storeRep = storeRep;
    }
    [HttpGet]
    public async Task<IActionResult> Get()
    {
        var list = await _storeRep.GetAllAsync();

        return Ok(new { Code = 1000, Msg = "获取列表成功", Data = list });
    }

    [HttpPost]
    public async Task<IActionResult> Post(StoreCreateDto storeCreateDto)
    {
        var store = new Store { StoreName = storeCreateDto.StoreName, StorePrice = storeCreateDto.StorePrice };
        await _storeRep.CreateAsync(store);
        return Ok(new { Code = 1000, Msg = "创建成功", Data = store });

    }

    [HttpPut("{id}")]
    public async Task<IActionResult> Put(int id, StoreCreateDto storeCreateDto)
    {
        var store = await _storeRep.GetByIdAsync(id);
        if (store == null)
        {
            return Ok(new { Code = 1004, Msg = "修改失败", Data = "" });

        }
        store.StoreName = storeCreateDto.StoreName;
        store.StorePrice = storeCreateDto.StorePrice;
        await _storeRep.UpdatAsync(store);
        return Ok(new { Code = 1000, Msg = "修改成功", Data = store });

    }
    
     [HttpDelete("{id}")]
    public async Task<IActionResult> Del(int id)
    {
        var store = await _storeRep.GetByIdAsync(id);
        if (store == null)
        {
            return Ok(new { Code = 1004, Msg = "删除失败", Data = "" });

        }
        await _storeRep.DeleteAsync(store);
        return Ok(new { Code = 1000, Msg = "删除成功", Data = store });

    }
}